﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Xml;

namespace SistemaComprasVentaYICHAN
{
    class GestorCliente
    {
        private static GestorCliente instancia = null;
        public List<Cliente> listClientes = new List<Cliente>();

        private GestorCliente()
        {
            listClientes = agregarLista();

        }
        public static GestorCliente getInstancia()
        {
            if (instancia == null) instancia = new GestorCliente();
            return instancia;
        }
        private List<Cliente> agregarLista()
        {
            Cliente client;
            List<Cliente> list = new List<Cliente>();
            try
            {
                XmlDocument xmldoc = new XmlDocument();
                xmldoc.Load("./clientes.xml");
                XmlNodeList Clientes = xmldoc.GetElementsByTagName("Clientes");
                XmlNodeList lista = ((XmlElement)Clientes[0]).GetElementsByTagName("Cliente");
                foreach (XmlElement nodo in lista)
                {
                    XmlNodeList xcod = nodo.GetElementsByTagName("CodigoCliente");
                    XmlNodeList xrazon = nodo.GetElementsByTagName("RazonSocial");
                    XmlNodeList xnombre = nodo.GetElementsByTagName("NombreContacto");
                    XmlNodeList xtelefContacto = nodo.GetElementsByTagName("TelefonoContacto");
                    XmlNodeList xtelefEmpresa = nodo.GetElementsByTagName("TelefonoEmpresa");
                    XmlNodeList xemail = nodo.GetElementsByTagName("email");
                    XmlNodeList xdireccion = nodo.GetElementsByTagName("direccion");
                    XmlNodeList xdep = nodo.GetElementsByTagName("departamento");

                    try
                    {
                        for (int i = 0; i < xcod.Count; i++)
                        {
                            client = new Cliente(System.Convert.ToInt32(xcod[i].InnerText), xrazon[i].InnerText, xnombre[i].InnerText,
                                                 xtelefContacto[i].InnerText, xtelefEmpresa[i].InnerText, xemail[i].InnerText, xdireccion[i].InnerText, xdep[i].InnerText);
                            list.Add(client);
                        }
                        client = null;
                    }
                    catch (NullReferenceException e)
                    {
                        e.ToString();
                    }
                }
            }
            catch (FileNotFoundException)
            {
                MessageBox.Show("No se encontro el archivo");
            }

            return list;
        }

        public Cliente buscarCliente(int codigo)
        {
            Cliente c=null;
            for (int i = 0; i < this.listClientes.Count; i++)
            {
                if (listClientes.ElementAt(i).Codigo == codigo)
                    return listClientes.ElementAt(i);
            }
            return c;
        }
    }
}
